/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sacodemel.financeiro.servico.impl;

import com.sacodemel.financeiro.modelo.Colheita;
import com.sacodemel.financeiro.modelo.dto.TotalDTO;
import com.sacodemel.financeiro.persistencia.dao.impl.ColheitaDAO;
import com.sacodemel.financeiro.persistencia.dao.IColheitaDAO;
import com.sacodemel.financeiro.servico.IColheitasService;
import com.sacodemel.financeiro.util.Constantes;
import java.util.List;
import javax.inject.Named;

/**
 *
 * @author X4Q1
 */
@Named
public class ColheitasService implements IColheitasService{

    IColheitaDAO colheitaDAO = new ColheitaDAO();

    public TotalDTO retornarTotalizadores(List<Colheita> lista) {

        TotalDTO total = new TotalDTO();

        if (lista != null && lista.size() > 0) {
            this.calculaTotais(total, lista);
            this.calculaMedias(total, lista.size());
        }

        return total;

    }

    public List<Colheita> obterListaColheitas() throws Exception {
        return colheitaDAO.listarAtivos();

    }
    
    public List<Colheita> obterListaTodasColheitas() throws Exception {
        return colheitaDAO.listarTodos();
    }

    public void salvar(Colheita colheita) throws Exception {
        
        if (colheita.getId()==null){
               colheita.setStatus(Constantes.STATUS_ATIVO);
        }
        
        colheitaDAO.salvar(colheita);
    }

    public void excluir(Colheita colheita) throws Exception {
        colheita.setStatus(Constantes.STATUS_INATIVO);
        colheitaDAO.salvar(colheita);
    }

    private void calculaTotais(TotalDTO total, List<Colheita> lista) {
         
        for (Colheita registroCaixa : lista) {
                total.setTotalLitros(total.getTotalLitros() + registroCaixa.getLitros());
                total.setTotalMelgueiras(total.getTotalMelgueiras() + registroCaixa.getColmeias());
                total.setTotalValor(total.getTotalValor() + registroCaixa.getValorLitro());
            }
        
    }

    private void calculaMedias(TotalDTO total, int size) {
            total.setMediaLitros(total.getTotalLitros()/size);
            total.setMediaMelgueiras(total.getTotalMelgueiras()/size);
            total.setMediaValor(total.getTotalValor()/size);
    }
}
